package com.raft.kvstore.message;

import java.io.Serializable;

/**正常的get响应，返回关键字对应的值
 * @author zhangsulei
 *
 */
public class GetCommandResponse implements Serializable {

    /**
	 *
	 */
	private static final long serialVersionUID = -4302540436999539805L;
	private final boolean found;
    private final byte[] value;

    public GetCommandResponse(byte[] value) {
        this(value != null, value);
    }

    /**
     * @param found 目的是区分null和没有找到数据的情况。假如kv服务允许value为null的关键字，那么客户端必须使用found来区分找到还是没有找到数据；如果不需要区分这两种情况，那么可以去掉found字段
     * @param value
     */
    public GetCommandResponse(boolean found, byte[] value) {
        this.found = found;
        this.value = value;
    }

    public boolean isFound() {
        return found;
    }

    public byte[] getValue() {
    	// value为二进制数组，因为kv服务不知道实际存储的是数字、字符串还是复杂类型，所以用更为一般化的二进制数组来表示
        return value;
    }

    @Override
    public String toString() {
        return "GetCommandResponse{found=" + found + "}";
    }

}
